﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Crosland.Automotriz.Logic.Linq;
using System.Configuration;
using Crosland.Automotriz.Seguridad.Business;
using Crosland.Automotriz.Seguridad.Entity;
using Crosland.Automotriz.Entidad;
using System.Data;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxGridView;
using DevExpress.Web.ASPxPivotGrid;
using DevExpress.XtraPivotGrid;

namespace Crosland.Automotriz.Web.Vehiculos
{
    public partial class wFrmStockDealerExtranet : System.Web.UI.Page
    {
        string idNegocio = ConfigurationManager.AppSettings["Negocio"];
        const string script = "MostrarAlerta();";

        bool bounded;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack == false)
            {
                ListaAnio();
                ListarMarcas();
                MostrarClienteAsignado();
                MostrarVendedorAsignado();
                cboMes.Value = DateTime.Now.Month.ToString();

                string columnIndexValue = ColumnIndex.Value, rowIndexValue = RowIndex.Value;
                if (!string.IsNullOrEmpty(columnIndexValue) && !string.IsNullOrEmpty(rowIndexValue) && ASPxPopupControl1.ShowOnPageLoad)
                    BindGridView(columnIndexValue, rowIndexValue);
                pv.ClientSideEvents.CellClick = GetJSCellClickHandler();
                ASPxPopupControl1.ClientSideEvents.Closing = GetJSPopupClosingHandler();

            }
            Listar();
        }

        protected void BindGridView(string columnIndex, string rowIndex)
        {
            if (bounded) return;
            bounded = true;
            ASPxGridView1.DataSource = pv.CreateDrillDownDataSource(Int32.Parse(columnIndex), Int32.Parse(rowIndex));
            ASPxGridView1.DataBind();
        }

        protected string GetJSCellClickHandler()
        {
            return string.Format(@"function (s, e) {{
    var columnIndex = document.getElementById('{0}'),
        rowIndex = document.getElementById('{1}');
    columnIndex.value = e.ColumnIndex;
    rowIndex.value = e.RowIndex;
    GridView.PerformCallback('D');
    ShowDrillDown();
}}", ColumnIndex.ClientID, RowIndex.ClientID);
        }
        protected string GetJSPopupClosingHandler()
        {
            return string.Format(@"function (s, e) {{
    var columnIndex = document.getElementById('{0}'),
        rowIndex = document.getElementById('{1}');
    columnIndex.value = '';
    rowIndex.value = ''; 
}}", ColumnIndex.ClientID, RowIndex.ClientID);
        }

        void ListaAnio()
        {
            clsTH_VentaBL da = new clsTH_VentaBL();
            IEnumerable<object> años;
            años = da.AniosFactura();
            cboAño.DataSource = años;
            cboAño.TextField = "anio";
            cboAño.ValueField = "anio";
            cboAño.DataBind();
            cboAño.Value = DateTime.Now.Year.ToString();
        }

        void ListarMarcas()
        {
            clsTD_MarcaBL neg = new clsTD_MarcaBL();
            cboMarca.DataSource = neg.ListarMarcas();
            cboMarca.TextField = "DES_MARCA";
            cboMarca.ValueField = "ID_MARCA";
            cboMarca.DataBind();
            cboMarca.SelectedIndex = 0;
        }

        void MostrarClienteAsignado() 
        {
            if (Session["User"] != null)
            {
                string id_usuario = Session["User"].ToString();
                clsT_Seg_Usuario_ClienteLogic neg = new clsT_Seg_Usuario_ClienteLogic();
                List<clsT_Seg_Usuario_Cliente> lista = neg.lista_T_SEG_USUARIO_CLIENTE(id_usuario);
                if (lista != null)
                {
                    if (lista.Count > 0)
                    {
                        lblCliente.Text = lista[0].DES_CLIENTE;
                        lblIdCliente.Text = lista[0].ID_CLIENTE.ToString();
                    }
                    else
                    {
                        lblMensaje.Text = "No tiene cliente asignado";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                        cboAño.Enabled = false;
                        cboMes.Enabled = false;
                        cboMarca.Enabled = false;
                        btnConsultar.Enabled = false;
                        pv.Enabled = false;

                    }
                }
                else 
                {
                    lblMensaje.Text = "No tiene cliente asignado";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                    cboAño.Enabled = false;
                    cboMes.Enabled = false;
                    cboMarca.Enabled = false;
                    btnConsultar.Enabled = false;
                    pv.Enabled = false;
                }
            }
        }

        void MostrarVendedorAsignado() 
        {
            if (lblIdCliente.Text == "") 
            {
                lblMensaje.Text = "No tiene cliente asignado";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                return;
            }
            int id_cliente = int.Parse(lblIdCliente.Text);
            int id_org_venta = 3;
            clsT_CLIENTE_VENDEDORBL neg = new clsT_CLIENTE_VENDEDORBL();
            List<TD_Vendedor_Nombre> lista = neg.ListarClienteVendedor_Cliente_Org(id_cliente, id_org_venta);
            if (lista != null) 
            {
                if (lista.Count > 0)
                {
                    lblSupervisor.Text = lista[0].Vendedor;
                }
                else
                {
                    lblMensaje.Text = "No tiene supervisor de ventas asignado";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                    cboAño.Enabled = false;
                    cboMes.Enabled = false;
                    cboMarca.Enabled = false;
                    btnConsultar.Enabled = false;
                    pv.Enabled = false;

                }
            }
            else
            {
                lblMensaje.Text = "No tiene supervisor de ventas asignado";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                cboAño.Enabled = false;
                cboMes.Enabled = false;
                cboMarca.Enabled = false;
                btnConsultar.Enabled = false;
                pv.Enabled = false;

            }
        }

        void Listar() 
        {
            if (lblIdCliente.Text == "")
            {
                lblMensaje.Text = "No tiene cliente asignado";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                return;
            }
            int anio = int.Parse(cboAño.Value.ToString());
            int mes = int.Parse(cboMes.Value.ToString());
            int id_cliente = int.Parse(lblIdCliente.Text);
            string marca = cboMarca.Text;
            clsT_Ven_Sell_In_Out_StockBL neg = new clsT_Ven_Sell_In_Out_StockBL();
            pv.DataSource = neg.Listar(anio, mes, 3, id_cliente, marca);
            pv.DataBind();
        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Repuestos/wFrmDefault.aspx?id=" + idNegocio);
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            Listar();
        }

        protected void ASPxGridView1_CustomCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewCustomCallbackEventArgs e)
        {
            string[] param = e.Parameters.Split('|');
            if (param[0] != "D") return;
            BindGridView(ColumnIndex.Value, RowIndex.Value);
            ASPxGridView1.PageIndex = 0;
        }

        protected void btnGrabarDetalle_Click(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < ASPxGridView1.VisibleRowCount; i++)
                {
                    int Id_ven_sell_in_out_stock;
                    object values = ASPxGridView1.GetRowValues(i, new string[] { "Id_ven_sell_in_out_stock" });
                    Id_ven_sell_in_out_stock = int.Parse(values.ToString());

                    ASPxSpinEdit seCantidad = ASPxGridView1.FindRowCellTemplateControl(i, ASPxGridView1.Columns["Cantidad"] as GridViewDataColumn, "seCantidad") as ASPxSpinEdit;
                    int Cantidad = int.Parse(seCantidad.Value.ToString());

                    clsT_Ven_Sell_In_Out_StockBL neg = new clsT_Ven_Sell_In_Out_StockBL();
                    neg.ActualizarCantidad(Id_ven_sell_in_out_stock, Cantidad);
                }
                Listar();
                lblMensaje.Text = "Datos actualizados satisfactoriamente.";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
            }
            catch (Exception ex)
            {
                lblMensaje.Text = ex.Message;
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
            }
        }


    }
}